﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VatTuDTO;
using VatTuBUS;
using VatTuBUS1;

namespace CungUngXayDung
{
    public partial class DatHang : System.Web.UI.Page
    {
        int phanTramUuDai=0;
        int tongtien=0;
        protected void Page_Load(object sender, EventArgs e)
        {
            Session["LuuURL"] = "DatHang.aspx"; // Lưu lại trang vừa muốn đến
            if (Session["TenDangNhap"] == null || Session["TenNguoiDung"] == null)
            {
                Response.Redirect("ThongBao.aspx");
            } 

            txtTenKhachHang.Text = Session["TenNguoiDung"].ToString();
            txtMaKhachHang.Text = Session["MaNguoiDung"].ToString();

            int maLoaiNguoiDung =int.Parse( Session["MaLoaiNguoiDung"].ToString());
            LoaiNguoiDungDTO dto = new LoaiNguoiDungBUS().SelectLoaiNguoiDung(maLoaiNguoiDung);
             phanTramUuDai = dto.PhanTramUuDai;
            lbPhanTramUuDai.Text = phanTramUuDai.ToString ()+ "%";
            init();
            initNgayGio();
          
            
        }

        public void init()
        {
            List<GioHangDTO> list = new List<GioHangDTO>();
            list = (List<GioHangDTO>)Session["Cart"];
            if (list != null)
            {
                lbTongTriGiaHoaDon.Text = new GioHangBUS().TinhTongTienGioHang(list).ToString() + " VNĐ";
                int tongtrigia = int.Parse(new GioHangBUS().TinhTongTienGioHang(list).ToString());
                int tongTienThanToan = tongtrigia - (tongtrigia * phanTramUuDai)/100;
                tongtien=tongTienThanToan;
                lbTongTienThanhToan.Text=tongTienThanToan.ToString()+" VNĐ";
                dgvGioHang.DataSource = list;
                dgvGioHang.DataBind();
            }
        }

        public void initNgayGio()
        {
            DateTime d = new DateTime();
            d = DateTime.Now;

            cbGioNhan.Items.Add("--");
            for (int i = 7; i <= 20; i++)
                cbGioNhan.Items.Add(i.ToString());

            cbPhutNhan.Items.Add("--");
            cbPhutNhan.Items.Add("00");
            cbPhutNhan.Items.Add("15");
            cbPhutNhan.Items.Add("30");
            cbPhutNhan.Items.Add("45");

            cbNgay.Items.Add("--");
            for (int i = 1; i <= 31; i++)
                cbNgay.Items.Add(i.ToString());


            cbThang.Items.Add("--");
            for (int i = 1; i <= 12; i++)
                cbThang.Items.Add(i.ToString());

            cbNam.Items.Add("--");
            cbNam.Items.Add(d.Year.ToString());
            cbNam.Items.Add((d.Year + 1).ToString());



            cbNgay.SelectedValue = d.Day.ToString();
            cbThang.SelectedValue = d.Month.ToString();
            cbNam.SelectedValue = d.Year.ToString();
        }


        protected void DatHang_Click(object sender, EventArgs e)
        {


            //Kiểm tra form


            //Check Họ tên khách hàng
            if (txtTenKhachHang.Text == "")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtTenKhachHang.Text))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        txtTenKhachHang.Text, "alert('Tên khách hàng không rỗng')", true);
                }

                return;
            }

            //Check số điện thoại
            //if (CheckBUS.CheckPhoneNumber(txtDienThoai.Text) == false)
            //{
            //    if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtDienThoai.Text))
            //    {
            //        ClientScript.RegisterStartupScript(this.GetType(),
            //            txtDienThoai.Text, "alert('Số điện thoại sai định dạng số')", true);
            //    }

            //    return;
            //}


            //Check Địa chỉ
            if (txtDiaChiNhan.Text == "")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtDiaChiNhan.Text))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        txtDiaChiNhan.Text, "alert('Địa chỉ nhận không rỗng')", true);
                }

                return;
            }
            //Check ten nguoi nhan
            if (txtTenNguoiNhan.Text == "")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtDiaChiNhan.Text))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        txtTenNguoiNhan.Text, "alert('Tên người nhận không rỗng')", true);
                }

                return;
            }
            //Check Giờ nhận
            if (cbGioNhan.SelectedValue == "--")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbGioNhan.SelectedValue))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        cbGioNhan.SelectedValue, "alert('Chưa chọn giờ phút nhận')", true);
                }

                return;
            }

            //Check Giờ nhận
            if (cbPhutNhan.SelectedValue == "--")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbPhutNhan.SelectedValue))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        cbPhutNhan.SelectedValue, "alert('Chưa chọn giờ phút nhận')", true);
                }

                return;
            }


            //Check Ngày nhận
            if (cbNgay.SelectedValue == "--")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbNgay.SelectedValue))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        cbNgay.SelectedValue, "alert('Chưa chọn ngày nhận')", true);
                }

                return;
            }



            //Check Tháng nhận
            if (cbThang.SelectedValue == "--")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbThang.SelectedValue))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        cbThang.SelectedValue, "alert('Chưa chọn tháng nhận')", true);
                }

                return;
            }


            //Check Năm nhận
            if (cbNam.SelectedValue == "--")
            {
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbNam.SelectedValue))
                {
                    ClientScript.RegisterStartupScript(this.GetType(),
                        cbNam.SelectedValue, "alert('Chưa chọn năm nhận')", true);
                }

                return;
            }





            if (DonDatHang() == 1)
            {
                Session["Cart"] = new List<GioHangDTO>();
                ClientScript.RegisterStartupScript(this.GetType(),
                      txtTenNguoiNhan.Text, "alert('Đặt hàng thành công')", true);
               // Response.Redirect("ThongBao.aspx?id=thanhcong");
            }
            else
            {
               // Response.Redirect("ThongBao.aspx?id=Error");
                ClientScript.RegisterStartupScript(this.GetType(),
                      txtTenNguoiNhan.Text, "alert('Lỗi đặt hàng, vui lòng nhập lại')", true);
            }
        }

        public int DonDatHang()
        {
            int flag = 0;
            //Các DTO
            List<GioHangDTO> giohangListDTO = new List<GioHangDTO>();
            HoaDonDTO hoadonDTO = new HoaDonDTO();

            //Các xử lý BUS
            ChiTietHoaDonBUS cthoadonBUS = new ChiTietHoaDonBUS();
            HoaDonBUS hoadonBUS = new HoaDonBUS();


            //Lấy giỏ hàng
            giohangListDTO = (List<GioHangDTO>)Session["Cart"];

            //Thêm hóa đơn
            hoadonDTO.MaNguoiDung = int.Parse(txtMaKhachHang.Text);
           
           
            hoadonDTO.NgayGioDatHang = DateTime.Now;
          

            DateTime t = new DateTime(int.Parse(cbNam.SelectedValue), int.Parse(cbThang.SelectedValue), int.Parse(cbNgay.SelectedValue), int.Parse(cbGioNhan.SelectedValue), int.Parse(cbPhutNhan.SelectedValue), 0); ;

            hoadonDTO.NgayGioGiaoHang = t;
            hoadonDTO.DiaDiemGiaoHang = txtDiaChiNhan.Text;

           
            hoadonDTO.HinhThucTHanhToan = "Thanh toán trực tiếp khi giao";
            hoadonDTO.MaTinhTrang=  1 ;
            hoadonDTO.TongTien = tongtien;
            hoadonDTO.TenNguoiNhan = txtTenNguoiNhan.Text;
            if (hoadonBUS.InsertHoaDon(hoadonDTO) == false)
            {
                return 0;
            }

            //Lấy mã hóa đơn
            int MaHoaDon = hoadonBUS.LayMaHoaDonMoi();

            //Thêm chi tiết hóa đơn
            foreach (GioHangDTO item in giohangListDTO)
            {
                ChiTietHoaDonDTO dto = new ChiTietHoaDonDTO();
                dto.MaHoaDon = MaHoaDon;
                dto.MaSanPham = item.MaSanPham;
                dto.SoLuong = item.SoLuong;
                dto.DonGiaBan = item.DonGia;


                if (cthoadonBUS.ThemChiTietHoaDon(dto) == false)
                {
                    flag = 1;
                    break;
                }
            }

            if (flag == 1)
            {
                //rollback xóa tất cả hóa đơn có MaHD
                cthoadonBUS.XoaChiTietHoaDon_MaHD(MaHoaDon);
                hoadonBUS.DeleteHoaDon(MaHoaDon);

                return 0;
            }


            return 1;
        }


    }
}